﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Wpf_ClientLeger.BusinessObject;
using Wpf_ClientLeger.ServicePreparation;

namespace Wpf_ClientLeger.IHM
{
    /// <summary>
    /// Logique d'interaction pour SaisieBP.xaml
    /// </summary>
    public partial class SaisieBP : Window
    {
        Parametres paramAppli;
        public User currentUser;
        public ServicePreparationClient ServicePrepa;
        public LgBpDTO ligneBp;
        public BPDTO enteteBP;
        int gencod;

        public SaisieBP(Parametres param, User user)
        {
            InitializeComponent();
            ServicePrepa = new ServicePreparationClient();
            this.currentUser = user;
            this.paramAppli = param;
        }

        //contrôle du gencod saisi, enchainement sur l'écran de saisie quantité
        private void bt_valider_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                gencod = int.Parse(this.txt_gencod.Text);
            }
            catch(Exception ex)
            {
                gencod = 0;    
            }

            if (gencod > 0)
            {
                //Appel du webservice pour le chargement de la ligne BP demandée
                try
                {
                    ligneBp = ServicePrepa.ChargerLigneBP(gencod);


                    if (ligneBp.id != 0)
                    {
                        //Ligne chargée --> chargement de l'entete
                        this.enteteBP = this.ServicePrepa.ChargerBP(this.ligneBp.idBp);

                        if (this.enteteBP.idBP != 0)
                        {
                            if (this.enteteBP.statutBP < 3 && this.ligneBp.statut < 3)
                            {
                                //contrôles OK --> saisie de la quantité (écran SaisieBPQuantite)
                                this.lbl_error.Content = "";
                                SaisieBPQuantite saisieQte = new SaisieBPQuantite(this);
                                saisieQte.ShowDialog();
                            }
                            else
                            {
                                this.lbl_error.Content = "BP CLOTURE";
                            }
                        }
                        else
                        {
                            this.lbl_error.Content = "BP " + this.ligneBp.idBp + " INEXISTANT!";
                        }
                    }
                    else
                    {
                        this.lbl_error.Content = "CODE LIGNE INCONNU";
                    }
                }
                catch (System.ServiceModel.EndpointNotFoundException ex)
                {
                    this.lbl_error.Content = "Erreur lors de l'appel du service";
                }

            }

            else
            {
                this.lbl_error.Content = "ERREUR FORMAT";
            }

        }

        //touche entrée --> même effet que bouton valider
        private void txt_gencod_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                bt_valider_Click(sender, e);
            }
        }

        //sortie de l'écran --> retour à l'écran menu principal
        private void bt_finSaisie_Click(object sender, RoutedEventArgs e)
        {
            Preparation_Menu menuPrepa = new Preparation_Menu(paramAppli, currentUser);
            menuPrepa.Show();
            this.Close();
        }

        //au chargement de l'écran --> focus sur le champ gencod
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            this.txt_gencod.Focus();
            this.txt_gencod.SelectAll();
        }

        private void Window_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Escape)
            {
                bt_finSaisie_Click(sender, e);
            }
        }
      
    }
}
